import axios from 'axios'
import {Message} from 'element-ui'
import {getToken} from '@/utils/auth'

let baseUrl = process.env.VUE_APP_API_URL

axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'

//请求拦截器
axios.interceptors.request.use(config => {
    // 是否需要设置 token
    const isToken = (config.headers || {}).isToken === false
    if (getToken() && !isToken) {
        config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
    }
    return config
}, error => {
    console.log(error)
    Promise.reject(error)
})
// 响应拦截器
axios.interceptors.response.use(res => {
        return res
    },
    error => {
        let {message} = error;
        if (message == "Network Error") {
            message = "后端接口连接异常";
        } else if (message.includes("timeout")) {
            message = "系统接口请求超时";
        } else if (message.includes("Request failed with status code")) {
            message = "系统接口" + message.substr(message.length - 3) + "异常";
        }
        Message({
            message: message,
            type: 'error',
            duration: 5 * 1000
        })
        return Promise.reject(error)
    }
)

const api = {
    requestGet(url, params) {
        return new Promise((resolve, reject) => {
            axios
                .get(baseUrl + url + "?" + new Date().getTime(), {
                    params: params,
                })
                .then((res) => {
                    resolve(res.data);
                })
                .catch((err) => {
                    reject(err.data);
                });
        });
    },
    requestPost(url, params) {
        return new Promise((resolve, reject) => {
            axios
                .post(baseUrl + url, params)
                .then((res) => {
                    resolve(res.data);
                    return;
                })
                .catch((err) => {
                    reject(err.data);
                    return;
                });
        });
    },
    /**
     * 请求地址处理
     * @param {*} actionName action方法名称
     */
    adornUrl(actionName) {
        return 'http://82.157.177.46:8088/novel' + actionName
    }
}

export default api
